今天的主線任務:避免憑證外洩。
(翻譯:別再把 API Key 當早餐一起推上 GitHub 了🥲)
想像一下,你 push 的不是程式碼,而是「公司金庫的鑰匙」。
結果 GitHub 幫你大聲廣播:
「各位駭客注意,這 repo 有免費鑰匙可以領哦~先搶先贏!」
所以今天我們要學會在門口擺保全:
三道牆疊起來,外人再怎麼想偷看都只能撞牆。
注意:千萬別用真的金鑰!
我們只要假裝丟一個秘密進去,來驗證防線是不是有動作。
建立一個 .env
檔:
GITHUB_TOKEN=ghp_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Push 上去 → 立刻觸發 GitHub 的保護機制。
(就像推門時,門口的警衛突然抓住你:「欸你口袋是不是有鑰匙?」)
進到 Repo → Settings
打開這兩個選項:
這招就像 GitHub 幫你養了一隻「保全 AI 狗」,會在 push 的時候大聲汪汪叫。
雖然 GitHub 原生很強,但保全狗有時也會累。
所以我們在 CI 裝上 Gitleaks,讓 PR/Commit 自動被掃描。
最簡單的 GitHub Action(每天掃一次 + PR 留言):
name: DevSecOps – Secret Scanning (Gitleaks)
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
schedule:
- cron: "0 1 * * *" # 每天 09:00 台灣時間
workflow_dispatch:
jobs:
gitleaks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Gitleaks Scan
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
結果會直接貼在 PR 底下,像是老師在你的作業旁邊畫紅筆圈圈。
最後一層防線,就是「不要讓鑰匙連家門都走出來」。
用 pre-commit hook,push 前就先把可疑內容攔下來。
這樣一來:
三層防護疊好疊滿,
就算你一時手滑想把金庫鑰匙推上 GitHub,
也會被三道保全依序攔下來:
「不好意思,這東西你推不了。」
「你確定要推嗎?理由說來聽聽?」
「算了啦兄弟,乾脆一開始就別推。」